/*
 * @lc app=leetcode.cn id=557 lang=cpp
 * @lcpr version=30204
 *
 * [557] 反转字符串中的单词 III
 */

// @lcpr-template-start
using namespace std;
#include <algorithm>
#include <array>
#include <bitset>
#include <climits>
#include <deque>
#include <functional>
#include <iostream>
#include <list>
#include <queue>
#include <stack>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
// @lcpr-template-end
// @lc code=start
class Solution
{
public:
    string reverseWords(string s)
    {
        int n = s.size();
        if (n == 0)
            return s;
        int begin = 0, end = 0;
        for (int i = 0; i < n; ++i)
        {
            if (s[i] == ' ')
            {
                end = i;
                reverse(s.begin() + begin, s.begin() + end); // reverse左闭右开
                begin = i + 1;                               // 下一次的begin
            }
        }
        reverse(s.begin() + begin, s.end());

        return s;
    }
};
// @lc code=end

/*
// @lcpr case=start
// "Let's take LeetCode contest"\n
// @lcpr case=end

// @lcpr case=start
// "Mr Ding"\n
// @lcpr case=end

 */
